package util;

import java.sql.*;

/**
 * 这是一个工具类，完成与 mysql的连接和关闭资源
 */
public class JDBCUtils {
    // 定义相关的属性(4个), 因为只需要一份，因此使用 static
    private static String user; //用户名
    private static String password; //密码
    private static String url; //url
    private static String driver; //驱动名

    // 在静态代码块初始化
    static {
            // 获取数据库相关的属性值
            user = "root";
            password = "123456";
            url = "jdbc:mysql://172.18.40.9:3306/shuttle_reservation_system?useUnicode=true&amp&characterEncoding=utf-8&useTimezone=true&serverTimezone=Asia/Shanghai";
            driver = "com.mysql.cj.jdbc.Driver";
    }

    // 定义一个静态方法用于连接数据库, 返回与数据库的一个连接对象 Connection
    public static Connection getConnection() {
        try {
            Class.forName(driver);
            return DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            //1. 将编译异常转成 运行异常
            //2. 调用者，可以选择捕获该异常，也可以选择默认处理该异常，比较方便.
            throw new RuntimeException(e);
        }
    }

    // 定义一个静态方法用于关闭数据库相关资源
    /*
        1. ResultSet 结果集
        2. Statement 或者 PreparedStatement 执行SQL语句的对象
        3. Connection 数据库连接
        4. 如果需要关闭资源，就传入对象，否则传入 null
     */
    public static void close(ResultSet set, Statement statement, Connection connection) {
        // 判断是否为 null
        try {
            if (set != null) {
                set.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            // 将编译异常转成运行异常抛出
            throw new RuntimeException(e);
        }
    }
}
